package com.zz.admin.menuManagement.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.zz.admin.menuManagement.dto.MenuDto;
import com.zz.admin.menuManagement.entity.Menu;
import com.zz.common.base.dto.PageListResultDto;
import com.zz.common.base.param.QueryParam;
import java.util.List;

/**
 * 菜单表 服务接口
 * @author zhang.lei
 * @since 2025-04-12 15:32:26
 */
public interface MenuService extends IService<Menu>{

    /**
     * 分页查询
     *
     * @param menuDto 查询参数
     * @return PageListResultDto<MenuDto>
     * @create: 2025-04-12 15:32:26
     * @author zhang.lei
     * @see
     * @since 1.0
     */
    PageListResultDto<MenuDto> queryWithPage(MenuDto menuDto, QueryParam queryParam);

    /**
     * 分页查询
     *
     * @param menuDto 查询参数
     * @return List<MenuDto>
     * @create: 2025-04-12 15:32:26
     * @author zhang.lei
     * @see
     * @since 1.0
     */
    List<MenuDto> queryWithNoPage(MenuDto menuDto);

    /**
     * 根据id查询
     *
     * @param id 主键
     * @return MenuDto
     * @create: 2025-04-12 15:32:26
     * @author zhang.lei
     * @see
     * @since 1.0
     */
     MenuDto queryById(String id);

    /**
     * 根据主键查询单表数据
     *
     * @param id 主键
     * @return List<MenuDto>
     * @create: 2025-04-12 15:32:26
     * @author zhang.lei
     * @see
     * @since 1.0
     */
    List<MenuDto> queryByIds(List<String> id);

    /**
     * 保存
     *
     * @param menuDto 对象
     * @return MenuDto
     * @create: 2025-04-12 15:32:26
     * @author zhang.lei
     * @see
     * @since 1.0
     */
    MenuDto save(MenuDto menuDto);

    /**
     * 批量保存
     *
     * @param menuDtos 对象
     * @return List<MenuDto>
     * @create: 2025-04-12 15:32:26
     * @author zhang.lei
     * @see
     * @since 1.0
     */
    List<MenuDto> saveBatch(List<MenuDto> menuDtos);

    /**
     * 修改
     *
     * @param menuDto 对象
     * @return MenuDto
     * @create: 2025-04-12 15:32:26
     * @author zhang.lei
     * @see
     * @since 1.0
     */
    MenuDto modify(MenuDto menuDto);

    /**
     * 批量修改
     *
     * @param menuDtos 对象
     * @return List<MenuDto>
     * @create: 2025-04-12 15:32:26
     * @author zhang.lei
     * @see
     * @since 1.0
     */
    List<MenuDto> modifyBatch(List<MenuDto> menuDtos);

    /**
     * 删除
     *
     * @param id 主键
     * @create: 2025-04-12 15:32:26
     * @author zhang.lei
     * @see
     * @since 1.0
     */
     void delete(String id);

    /**
     * 删除
     *
     * @param ids 主键
     * @create: 2025-04-12 15:32:26
     * @author zhang.lei
     * @see
     * @since 1.0
     */
    void deleteBatch(List<String> ids);

    /**
     * 插入
     *
     * @param menuDto 对象
     * @return MenuDto
     * @create: 2025-04-12 15:32:26
     * @author zhang.lei
     * @see
     * @since 1.0
     */
    MenuDto insert(MenuDto menuDto);

    /**
     * 指定主键插入
     *
     * @param menuDto 对象
     * @return MenuDto
     * @create: 2025-04-12 15:32:26
     * @author zhang.lei
     * @see
     * @since 1.0
     */
    MenuDto insertWithId(MenuDto menuDto);

    /**
     * 查询树形有权限的菜单
     *
     * @param userId
     * @return
     */
    List<MenuDto> queryTreeRightMenus(String userId);
}
